A “virtual machine” or a “VM” refers to a specific software-based implementation of a machine in a virtualization environment, in which the computing resources of a physical host machine (e.g., CPU, memory, etc.) are virtualized or transformed into the underlying support for the fully functional virtual machine that can run its own operating system and applications on the underlying computing resources just like a real computer.
Virtualization works by inserting a thin layer of software directly on the computer hardware or on a host operating system. This layer of software contains a virtual machine monitor or “hypervisor” that allocates the computing resources of the physical host machine dynamically and transparently to create and run one or more virtual machines. Multiple operating systems may thereby run concurrently on a single physical host machine and share computing resources with each other. By encapsulating an entire machine, including CPU, memory, operating system, and network devices, a virtual machine is completely compatible with most standard operating systems, applications, and device drivers. Most modern implementations allow several operating systems and applications to safely run at the same time on a single physical host machine, with each having access to the computing resources it needs when it needs them.
Virtualization allows one to run multiple virtual machines on a single physical host machine, with each virtual machine sharing the computing resources of that one physical host machine across multiple environments. Different virtual machines can run different operating systems and multiple applications on the same physical host machine.
One reason for the broad adoption of virtualization in modern business and computing environments is because of the resource utilization advantages provided by virtual machines. Without virtualization, if a physical host machine is limited to a single dedicated operating system, then during periods of inactivity by the dedicated operating system the physical machine is not utilized to perform useful work. This is wasteful and inefficient if there are users on other physical host machines which are currently waiting for computing resources. To address this problem, virtualization allows multiple VMs to share the underlying computing resources of the physical host machine so that during periods of inactivity by one VM, other VMs can take advantage of the resource availability to process workloads. This can produce great efficiencies for the utilization of physical host machines, and can result in reduced redundancies and better resource cost management.
Furthermore, there are now products that can aggregate multiple physical host machines into a larger system and run virtualization environments, not only to utilize the computing resources of the physical host machines, but also to aggregate the storage resources of the individual physical host machines to create a logical storage pool. With such a storage pool, the data may be distributed across multiple physical host machines in the system but appear to each virtual machine to be part of the physical host machine that the virtual machine is hosted on. Such systems may use metadata to locate the indicated data; the metadata itself may be distributed and replicated any number of times across the system. These systems are commonly referred to as clustered systems, wherein the resources of a cluster of nodes (e.g., the physical host machines) are pooled to provide a single logical system.